﻿namespace TestTool.Tests.Definitions.Interfaces
{
    using System;
    using System.Threading;

    public interface IVideoForm
    {
        void CloseWindow();
        string GetEvents();
        void OpenWindow(bool WithAudio);
        void OpenWindow(bool WithAudio, bool WithVideo);
        void Replay(Action<Action, Action, Action> actionControl, bool useVideo, bool useAudio, bool useMeta);
        void Reset();
        bool WaitForStableKey(ref double Length);
        bool WaitForSync(ref int Length);

        string Address { get; set; }

        string AudioCodecName { get; set; }

        bool Base64LineBreaks { get; set; }

        bool CheckActualResolution { get; set; }

        bool CheckJPEGExtension { get; set; }

        string CustomPauseFields { get; set; }

        string CustomPlayFields { get; set; }

        string CustomSetupFields { get; set; }

        bool DebugPage { get; set; }

        bool DoSetupOnReplay { get; set; }

        bool EVENTS { get; set; }

        IVideoFormEvent EventSink { set; }

        int HTTPPort { get; set; }

        bool KEEPALIVE { get; set; }

        bool Multicast { get; set; }

        string MulticastAddress { get; set; }

        string MulticastAddressAudio { get; set; }

        string MulticastMultipleSetup { get; set; }

        int MulticastRtpPortAudio { get; set; }

        int MulticastRtpPortVideo { get; set; }

        int MulticastTTL { get; set; }

        int NICIndex { get; set; }

        bool OPTIONS { get; set; }

        string Password { get; set; }

        int ReplayMaxDuration { get; set; }

        bool ReplayMode { get; set; }

        int ReplayPauseWait { get; set; }

        bool ReplayReverse { get; set; }

        bool RTSP { get; set; }

        WaitHandle StopEvent { get; set; }

        bool SYNC { get; set; }

        bool TCP { get; set; }

        int Timeout { get; set; }

        bool UseKeepAliveOptions { get; set; }

        string User { get; set; }

        bool UseVideo { get; set; }

        string VideoCodecName { get; set; }

        int VideoFPS { get; set; }

        int VideoHeight { get; set; }

        int VideoWidth { get; set; }
    }
}

